home *** CD-ROM | disk | FTP | other *** search
/ Enter 2004 April / enter-2004-04.iso / files / httrack-3.30.exe / {app} / src_win / WinHTTrack / trans.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  2003-07-06  |  12.3 KB  |  464 lines

  1. // trans.cpp : implementation file
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include "Shell.h"
  6. #include "trans.h"
  7.  
  8. extern "C" {
  9.   #include "htscore.h"
  10.   #include "htslib.h"
  11. }
  12.  
  13. #ifdef _DEBUG
  14. #define new DEBUG_NEW
  15. #undef THIS_FILE
  16. static char THIS_FILE[] = __FILE__;
  17. #endif
  18.  
  19. extern char OPTIONhh[32];
  20. extern char OPTIONmm[32];
  21. extern char OPTIONss[32];
  22. extern HICON httrack_icon;
  23.  
  24. // Chargement des librairies RAS
  25. #if USE_RAS
  26. extern CDynamicRAS* LibRas;
  27. extern int LibRasUse;
  28. #endif
  29.  
  30. // Helper
  31. extern LaunchHelp* HtsHelper;
  32.  
  33. // reference sur objet
  34. extern Ctrans* dialog2;
  35.  
  36. /* Main WizTab frame */
  37. #include "WizTab.h"
  38. extern CWizTab* this_CWizTab;
  39. extern CWizTab* this_intCWizTab2;
  40.  
  41. /* Main splitter frame */
  42. #include "DialogContainer.h"
  43. #include "splitter.h"
  44. extern CSplitterFrame* this_CSplitterFrame;
  45.  
  46. // prise en compte prefs
  47. extern void compute_options() ;
  48.  
  49. /* Back to FirstInfo */
  50. //#include "FirstInfo.h"
  51.  
  52. /* Dialog final */
  53. #include "inprogress.h"
  54.  
  55. /* maintab */
  56. #include "maintab.h"
  57. extern CMainTab* maintab;
  58.  
  59. /* newproj */
  60. #include "newproj.h"
  61. extern CNewProj* dialog0;
  62.  
  63. extern CShellApp* CShellApp_app;
  64.  
  65. /* debug */
  66. extern FILE* fp_debug;
  67.  
  68.  
  69. /////////////////////////////////////////////////////////////////////////////
  70. // Ctrans dialog
  71.  
  72. IMPLEMENT_DYNCREATE(Ctrans, CPropertyPage)
  73.  
  74. Ctrans::Ctrans()
  75.     : CPropertyPage(Ctrans::IDD)
  76. {
  77.   dialog2=this;    /* NOTER REFERENCE */
  78.   hms=0;
  79.     //{{AFX_DATA_INIT(Ctrans)
  80.     m_hh = _T("");
  81.     m_mm = _T("");
  82.     m_ss = _T("");
  83.     m_rasid = -1;
  84.     m_rasdisc = FALSE;
  85.     m_rasshut = FALSE;
  86.     //}}AFX_DATA_INIT
  87. }
  88.  
  89. Ctrans::~Ctrans() {
  90.   dialog2=NULL;
  91. }
  92.  
  93. void Ctrans::DoDataExchange(CDataExchange* pDX)
  94. {
  95.     CPropertyPage::DoDataExchange(pDX);
  96.     //{{AFX_DATA_MAP(Ctrans)
  97.     DDX_Control(pDX, IDC_rasshut, m_ctl_rasshut);
  98.     DDX_Control(pDX, IDC_rasdisc, m_ctl_rasdisc);
  99.     DDX_Control(pDX, IDC_cnx, m_ctlcnx);
  100.     DDX_Control(pDX, IDC_rasid, m_ctlrasid);
  101.     DDX_Control(pDX, IDC_wait, m_ctl_wait);
  102.     DDX_Control(pDX, IDC_ss, m_ctl_ss);
  103.     DDX_Control(pDX, IDC_mm, m_ctl_mm);
  104.     DDX_Control(pDX, IDC_hh, m_ctl_hh);
  105.     DDX_Text(pDX, IDC_hh, m_hh);
  106.     DDV_MaxChars(pDX, m_hh, 2);
  107.     DDX_Text(pDX, IDC_mm, m_mm);
  108.     DDV_MaxChars(pDX, m_mm, 2);
  109.     DDX_Text(pDX, IDC_ss, m_ss);
  110.     DDV_MaxChars(pDX, m_ss, 2);
  111.     DDX_CBIndex(pDX, IDC_rasid, m_rasid);
  112.     DDX_Check(pDX, IDC_rasdisc, m_rasdisc);
  113.     DDX_Check(pDX, IDC_rasshut, m_rasshut);
  114.     //}}AFX_DATA_MAP
  115. }
  116.  
  117.  
  118. BEGIN_MESSAGE_MAP(Ctrans, CPropertyPage)
  119.     //{{AFX_MSG_MAP(Ctrans)
  120.     ON_EN_CHANGE(IDC_hh, OnChangehh)
  121.     ON_WM_HELPINFO()
  122.     ON_CBN_SELCHANGE(IDC_rasid, OnSelchangerasid)
  123.     ON_CBN_DROPDOWN(IDC_rasid, OnDropdownrasid)
  124.     ON_WM_SHOWWINDOW()
  125.     ON_BN_CLICKED(IDC_rasdisc, Onrasdisc)
  126.     //}}AFX_MSG_MAP
  127.     ON_NOTIFY_EX( TTN_NEEDTEXT, 0, OnToolTipNotify )
  128.   ON_COMMAND(ID_HELP_FINDER,OnHelpInfo2)
  129.   ON_COMMAND(ID_HELP,OnHelpInfo2)
  130.     ON_COMMAND(ID_DEFAULT_HELP,OnHelpInfo2)
  131. END_MESSAGE_MAP()
  132.  
  133. /////////////////////////////////////////////////////////////////////////////
  134. // Ctrans message handlers
  135.  
  136. void Ctrans::OnChangehh() 
  137. {
  138.   CString st="";
  139.   char tempo[256];
  140.  
  141.   // TODO: If this is a RICHEDIT control, the control will not
  142.     // send this notification unless you override the CPropertyPage::OnInitDialog()
  143.     // function to send the EM_SETEVENTMASK message to the control
  144.     // with the ENM_CHANGE flag ORed into the lParam mask.
  145.  
  146.   // TODO: Add your control notification handler code here
  147.  
  148.   GetDlgItemText(IDC_hh,st);
  149.   strcpybuff(tempo,st);
  150.  
  151.   if ((strlen(tempo)>0)!=hms) {
  152.     hms=!hms;
  153.     if (strlen(tempo)>0) {
  154.       m_ctl_wait.ModifyStyle(WS_DISABLED,0);
  155.     }
  156.     else {
  157.       m_ctl_wait.ModifyStyle(0,WS_DISABLED);
  158.     }    
  159.     m_ctl_wait.RedrawWindow();
  160.  }  
  161.  
  162. // m_wait=TRUE; 
  163.  
  164. }
  165.  
  166. BOOL Ctrans::OnInitDialog() 
  167. {
  168.     CPropertyPage::OnInitDialog();
  169.  
  170.   ((CButton*)GetDlgItem(IDC_select_start))->SetCheck(1);
  171.   strcpybuff(RasString,"");
  172.   
  173.   SetIcon(httrack_icon,false);
  174.   SetIcon(httrack_icon,true);  
  175.     EnableToolTips(true);     // TOOL TIPS
  176.  
  177.   // Patcher l'interface pour les Franτais ;-)
  178.   if (LANG_T(-1)) {    // Patcher en franτais
  179.     //SetDlgItemText(,"");
  180.     SetWindowText(LANG(LANG_J9) /*"DΘmarrer.."*/);
  181.     SetDlgItemText(IDC_select_start,LANG(LANG_J10) /*"Vous pouvez dΘmarrer le miroir en pressant la touche DEMARRER,\nou dΘfinir avant les options de connexion"*/);
  182.     SetDlgItemText(IDC_select_save,LANG(LANG_J10b));
  183.     SetDlgItemText(IDC_STATIC_delay,LANG(LANG_J11) /*"Retarder"*/);
  184.     SetDlgItemText(IDC_wait,LANG(LANG_J12) /*"Attendre avant de commencer jusqu'α: (hh/mm/ss)"*/);
  185.     //SetDlgItemText(IDC_avant,LANG(LANG_BACK) /*"<- AVANT"*/);
  186.     SetDlgItemText(IDCANCEL,LANG(LANG_QUIT) /*"Quitter"*/);
  187.     SetDlgItemText(IDOK,LANG(LANG_J13) /*"DEMARRER!"*/);
  188.     SetDlgItemText(IDC_STATIC_ras,LANG(LANG_J14) /*"Connexion provider"*/);
  189.     SetDlgItemText(IDC_cnx,LANG(LANG_J15) /*"Connecter α ce provider"*/);
  190.     SetDlgItemText(IDC_rasdisc,LANG_J16);
  191.   }
  192.  
  193.   // liste vide pour commencer
  194.   isfilled=FALSE;
  195.   FillProviderList(0);
  196.   m_ctlrasid.SetCurSel(0);
  197.  
  198.     return TRUE;  // return TRUE unless you set the focus to a control
  199.                   // EXCEPTION: OCX Property Pages should return FALSE
  200. }
  201.  
  202.  
  203. void Ctrans::FillProviderList(int fill) 
  204. {
  205. // remplssage su champ des noms de connexion RAS
  206. #if USE_RAS
  207.   if (LibRasUse && fill) {
  208.     DWORD size;
  209.     RASENTRYNAME* adr;
  210.     int count=256;
  211.     size = sizeof(RASENTRYNAME)*(count+2);
  212.     adr = (RASENTRYNAME*) (char*) calloc(size,1);
  213.     if (adr) {
  214.       DWORD ent;
  215.       int i;
  216.       for(i=0;i<count;i++) {
  217.         adr[i].dwSize=sizeof(RASENTRYNAME);
  218.         strcpybuff(adr[i].szEntryName,"");
  219.       }
  220.       if (LibRas->RasEnumEntries(NULL,NULL,(RASENTRYNAME*) adr,&size,&ent) == 0) {
  221.         int i;
  222.         GetDlgItem(IDC_STATIC_ras)->ModifyStyle(WS_DISABLED,0);
  223.         GetDlgItem(IDC_STATIC_ras)->RedrawWindow();
  224.         m_ctlrasid.ResetContent();
  225.         m_ctlrasid.InsertString(-1,LANG(LANG_J2 /*"do not connect to a provider (already connected)","pas de connexion α un provider (dΘja connectΘ)"*/));
  226.         for(i=0;i<(int) ent;i++) {
  227.           m_ctlrasid.InsertString(-1,adr[i].szEntryName);
  228.         }
  229.       }
  230.       free(adr);
  231.     }
  232.   } else
  233. #endif
  234.   {
  235.     if (LibRasUse) {
  236.       GetDlgItem(IDC_STATIC_ras)->ModifyStyle(WS_DISABLED,0);
  237.     } else {
  238.       GetDlgItem(IDC_STATIC_ras)->ModifyStyle(0,WS_DISABLED);
  239.     }
  240.     GetDlgItem(IDC_STATIC_ras)->RedrawWindow();
  241.     m_ctlrasid.ResetContent();
  242.     m_ctlrasid.InsertString(-1,LANG_J2b);
  243.   }
  244. }
  245.  
  246.  
  247. // ------------------------------------------------------------
  248. // TOOL TIPS
  249. //
  250. // ajouter dans le .cpp:
  251. // remplacer les deux Wid1:: par le nom de la classe::
  252. // dans la message map, ajouter
  253. // ON_NOTIFY_EX( TTN_NEEDTEXT, 0, OnToolTipNotify )
  254. // dans initdialog ajouter
  255. // EnableToolTips(true);     // TOOL TIPS
  256. //
  257. // ajouter dans le .h:
  258. // char* GetTip(int id);
  259. // et en generated message map
  260. // afx_msg BOOL OnToolTipNotify( UINT id, NMHDR * pNMHDR, LRESULT * pResult );
  261. BOOL Ctrans::OnToolTipNotify( UINT id, NMHDR * pNMHDR, LRESULT * pResult )
  262. {
  263.   TOOLTIPTEXT *pTTT = (TOOLTIPTEXT *)pNMHDR;
  264.   UINT nID =pNMHDR->idFrom;
  265.   if (pTTT->uFlags & TTF_IDISHWND)
  266.   {
  267.     // idFrom is actually the HWND of the tool
  268.     nID = ::GetDlgCtrlID((HWND)nID);
  269.     if(nID)
  270.     {
  271.       char* st=GetTip(nID);
  272.       if (st != "") {
  273.         pTTT->lpszText = st;
  274.         pTTT->hinst = AfxGetResourceHandle();
  275.         return(TRUE);
  276.       }
  277.     }
  278.   }
  279.   return(FALSE);
  280. }
  281. char* Ctrans::GetTip(int ID)
  282. {
  283.   switch(ID) {
  284.   case IDC_rasid: return LANG_J8b; break;
  285.     case IDC_hh: case IDC_mm: case IDC_ss: 
  286.       return LANG(LANG_J3); break; // "Schedule the mirror","Programmer un miroir"); break;
  287.     case IDCANCEL:  return LANG(LANG_J4); break; // "Quit WinHTTrack","Quitter WinHTTrack"); break;
  288.     case IDC_avant: return LANG(LANG_J5); break; // "Back to the start page","Retour α la premiΦre page"); break;
  289.     case IDOK:      return LANG(LANG_J6); break; // "Click to start!","Clic pour dΘmarrer!"); break;
  290.     case IDC_rasdisc: return LANG_J17; break;
  291.     //case : return ""; break;
  292.   }
  293.   return "";
  294. }
  295. // TOOL TIPS
  296. // ------------------------------------------------------------
  297.  
  298.  
  299.  
  300.  
  301.  
  302.  
  303. // Appel aide
  304. BOOL Ctrans::OnHelpInfo2() {
  305.   return OnHelpInfo(NULL);
  306. }
  307.  
  308. BOOL Ctrans::OnHelpInfo(HELPINFO* dummy) 
  309. {
  310.   //return CPropertyPage::OnHelpInfo(pHelpInfo);
  311.   HtsHelper->Help();
  312.   return true;
  313.   //AfxGetApp()->WinHelp(0,HELP_FINDER);    // Index du fichier Hlp
  314.   //return true;
  315. }
  316.  
  317. void Ctrans::OnSelchangerasid() 
  318. {
  319.   m_ctl_rasdisc.SetCheck(1);
  320.   int r = m_ctlrasid.GetCurSel();
  321.   if (r!=CB_ERR) {
  322.     if (r==0) {
  323.       m_ctlcnx.ModifyStyle(0,WS_DISABLED); 
  324.     } else {
  325.       m_ctlcnx.ModifyStyle(WS_DISABLED,0); 
  326.     }
  327.     m_ctlcnx.RedrawWindow();
  328.   }
  329. }
  330.  
  331. BOOL Ctrans::OnWizardFinish( )
  332. {
  333.   BOOL DoLaunchMirror = ((CButton*)GetDlgItem(IDC_select_start))->GetCheck();
  334.  
  335.     // TODO: Add extra validation here
  336.   int r = m_ctlrasid.GetCurSel();
  337.   strcpybuff(RasString,"");
  338.   if ((r!=CB_ERR) && (r != 0)) {    // sΘlection provider
  339.     if (m_ctlrasid.GetLBText(r,RasString) != CB_ERR) {
  340.       if (strlen(RasString)>0) {
  341.         //
  342. #if USE_RAS
  343.         if (LibRasUse) {
  344.           if (strlen(RasString)>0) {    // sΘlection provider
  345.             BOOL ifpass;
  346.             dial.dwSize = sizeof(dial);
  347.             strcpybuff(dial.szEntryName,RasString);
  348.             strcpybuff(dial.szPhoneNumber,"");
  349.             strcpybuff(dial.szCallbackNumber,"");
  350.             strcpybuff(dial.szUserName,"");
  351.             strcpybuff(dial.szPassword,"");
  352.             strcpybuff(dial.szDomain,"");
  353.             if (!LibRas->RasGetEntryDialParams(NULL,&dial,&ifpass)) {
  354.               if (!ifpass) {    // pas de pass
  355.                 AfxMessageBox(LANG(LANG_J7 /*"No saved password for this connection!","Pas de mot de passe sauvΘ pour cette connexion!"*/));
  356.                 return 0;    // cancel
  357.               }
  358.             } else {
  359.               AfxMessageBox(LANG(LANG_J8 /*"Can not get RAS setup","Impossible d'obtenir les paramΦtres de connexion"*/));
  360.               return 0;    // cancel
  361.             }
  362.           }
  363.         }
  364. #endif
  365.         //
  366.       }
  367.     }
  368.   }
  369.  
  370.   /* prise en compte des options */
  371.   UpdateData(TRUE);         // DoDataExchange
  372.   compute_options() ;
  373.  
  374.   // Index "top" si nΘcessaire!
  375.   if (maintab->m_option3.m_windebug) {
  376.     fp_debug=fopen("winhttrack.log","wb");
  377.   } else {
  378.     fp_debug = NULL;
  379.   }
  380.   if (fp_debug) {
  381.     fprintf(fp_debug,"Writing winprofile.ini\r\n");
  382.     fflush(fp_debug);
  383.   }
  384.   /*
  385.   {
  386.     char path[1024];
  387.     strcpybuff(path,dialog0->GetBasePath());
  388.     make_empty_index(path);
  389.   }
  390.   */
  391.   
  392.   // sauver profile dans hts-cache si besoin est
  393.   //if(maintab->m_option3.m_cache) {
  394.   Save_current_profile(0);
  395.   //}
  396.   // FIN sauver profile dans hts-cache si besoin est
  397.   if (fp_debug) {
  398.     if (DoLaunchMirror)
  399.       fprintf(fp_debug,"Profile written, launching mirror\r\n");
  400.     else
  401.       fprintf(fp_debug,"Profile written, saving settings\r\n");
  402.     fflush(fp_debug);
  403.   }
  404.   CShellApp_app->end_path=dialog0->GetBasePath();
  405.   CShellApp_app->end_path_complete=dialog0->GetPath();
  406.  
  407.   if (DoLaunchMirror) {
  408.     /* Switcher sur Cinprogress! */
  409.     /*this_CSplitterFrame->SetNewView(0,1,RUNTIME_CLASS(Cinprogress));*/
  410.     this_CWizTab->ModifyStyle(WS_VISIBLE,0,0);
  411.     this_CWizTab->RedrawWindow();
  412.     //
  413.     //{
  414.     //  CWizTab* tmp;
  415.     //  tmp=this_CWizTab;
  416.     this_CWizTab=this_intCWizTab2;
  417.     //  this_CWizTab2=tmp;
  418.     //}
  419.     //
  420.     this_CWizTab->ModifyStyle(0,WS_VISIBLE,0);
  421.     this_CWizTab->ModifyStyle(WS_DISABLED,0,0);
  422.     this_CSplitterFrame->RedrawWindow();
  423.     this_CWizTab->FinalInProgress();
  424.     // Lancement du miroir
  425.     LaunchMirror();
  426.   } else {      /* Ok, saved, exit (new project) */
  427.     this_CSplitterFrame->SetNewView(0,1,RUNTIME_CLASS(CDialogContainer));
  428.   }
  429.  
  430.     return 0;
  431. }
  432.  
  433. void Ctrans::OnDropdownrasid() 
  434. {
  435. #if USE_RAS
  436.   if (!isfilled) {
  437.     isfilled=TRUE;
  438.     InitRAS();
  439.     FillProviderList(1);
  440.   }
  441. #endif
  442. }
  443.  
  444. BOOL Ctrans::OnSetActive( ) {
  445.   this_CWizTab->SetWizardButtons(PSWIZB_BACK|PSWIZB_FINISH);
  446.   WHTT_LOCATION("trans");
  447.   return 1;
  448. }
  449.  
  450. BOOL Ctrans::OnQueryCancel( ) {
  451.   this_CSplitterFrame->SetNewView(0,1,RUNTIME_CLASS(CDialogContainer));
  452.   return 0;
  453. }
  454.  
  455. BOOL Ctrans::OnKillActive( ) {
  456.   UpdateData(TRUE);         // DoDataExchange
  457.   return 1;
  458. }
  459.  
  460. void Ctrans::Onrasdisc() 
  461. {
  462.   InitRAS();
  463. }
  464.